<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS 数据类型</title>
    <script>
        /*
        * JavaScript 拥有动态类型
        *
        * */
        /* JavaScript 数字
        * 只有一种数字类型 ,数字可以带小数点
        * 也可以不带 极大或者极小的数字可以通过科学计数法来书写
        * */
        var x1 = 34.00;
        var x2 = 34;

        var y1 = 123e5; // 12300000
        var y2 = 123e-5;  // 0.00123

        /* 布尔类型
         * 逻辑值只有两个 true 和 false
          * */
        var x = true
        var y = false

        /*
        * Js 中的数组
        * */
        function testFunc() {

            var cars = new Array();
            cars[0] = "Audi";
            cars[1] = "BMW";
            cars[2] = "Volvo"

            var sCars = new Array("Audi","BMW","Volvo");  /*  这是第二种初始化方法 */

            var tCars = ["Audi","BMW","Volvo"];  /*  笔者想放不同类型的进去爱看*/

            console.log(cars,sCars,tCars);

            var fCars = ["Audi",12,false];
            console.log(fCars)  /* 测试第四个 cars 实际上数组中不需要是同一类型的元素  */

            /*数组的下标是基于零的,所以从项目 0 开始,第二个 是1 等以此类推 */

            /*  JavaScript 对象 */
        }

        /*测试Object 函数*/
        function objectFunc() {
            var person = {
                firstname:"Bill",
                lastname:"Gates",
                id:5566
            }

            var sPerson = {firstname:"Bill", lastname:"Gates", id:5566}  /* 这种也是一样的 换行并不影响 */
            var name = person.lastname;
            console.log(name)

            var lastname = sPerson.firstname;
            console.log(lastname)
            /* Js 对象有两种寻址方式 */
            var sLastName = sPerson["lastname"]

        }

        /*
        * Undefined 和 Null
         Undefined 这个值表示变量不含有值。

         可以通过将变量的值设置为 null 来清空变量。
        * */
        function nullFunction() {
            var testVar = ["Audi",12,false];
            console.log(testVar)
            
            testVar = null
            console.log(testVar)
            
            testVar = "Hello JavaScript"
            console.log(testVar)
            
        }
        
        /*  声明变量类型 */
        function defineVarType() {
            /*可以使用关键词 new 来声明类型 */
            var camera = new String("this is a string")
            var x = new Number(10)
            var y = new Boolean(true)
            var cars = new Array(123)
            var person = new Object()
            person.firstname = "dddd"

            console.log(camera,x,y,cars,person.firstname)
        }

    </script>
</head>
<body>
    <button onclick="testFunc()">测试数组</button><br/>
    <button onclick="objectFunc()">测试Js 对象类型</button><br/>
    <button onclick="nullFunction()">测试 undefined 类型</button><br/>
    <button onclick="defineVarType()">测试 声明变量类型</button><br/>
</body>
</html>